//package com.lt.test.consumer.controller;
//
//import com.alibaba.dubbo.config.annotation.Reference;
//import com.lt.test.api.KtCommonService;
//import com.lt.test.common.constant.HttpRequestConstant;
//import com.lt.test.common.constant.ShiroMd5HashConstant;
//import com.lt.test.common.exception.CustomException;
//import com.lt.test.common.util.StringUtils;
//import com.lt.test.common.util.WebUtils;
//import com.lt.test.entity.DTO.ActiveUser;
//import com.lt.test.entity.DTO.PageDTO;
//import com.lt.test.entity.DTO.ResponseDTO;
//import net.sf.json.JSONArray;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//import org.apache.shiro.SecurityUtils;
//import org.apache.shiro.crypto.hash.Md5Hash;
//import org.apache.shiro.subject.Subject;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileNotFoundException;
//import java.io.InputStream;
//import java.text.SimpleDateFormat;
//import java.util.*;
//
//@Controller
//@RequestMapping("/ktCommon")
//public class KtCommonController {
//	private static final Logger logger = LoggerFactory.getLogger(KtCommonController.class);
//
//	 @Reference(version = "1.0.0")
//	 private KtCommonService ktCommonService;
//
//	 /**
//     * 获取子区域
//     *
//     * @param request
//     * @param response
//     * @return
//     */
//    @RequestMapping("/getSubZone")
//    public
//    @ResponseBody
//    List<Map<String, Object>> getSubZone(HttpServletRequest request, HttpServletResponse response) {
//    	Map<String,String> parameter = WebUtils.getAllParamMap(request);
//    	List<Map<String, Object>> result = ktCommonService.getSubZone(parameter);
//        return result;
//    }
//
//
//
//    /**
//     * 分页区域信息
//     *
//     * @param request
//     * @param response
//     * @return
//     */
//    @RequestMapping("/getZoneListByPage")
//    public
//    @ResponseBody
//    PageDTO<Map<String, Object>> getZoneListByPage(HttpServletRequest request, HttpServletResponse response) {
//    	Integer page = Integer.valueOf(request.getParameter("page"));
//		Integer pageSize = Integer.valueOf(request.getParameter("rows"));
//        String filters = request.getParameter("filters");
//        PageDTO<Map<String, Object>> result = ktCommonService.getZoneListByPage(page, pageSize, filters);
//        return result;
//    }
//
//
//    /**
//     * 保存区域
//     *
//     * @param request
//     * @param response
//     * @return json
//     */
//    @RequestMapping("/saveZone")
//    public
//    @ResponseBody
//    ResponseDTO saveZone(HttpServletRequest request, HttpServletResponse response) {
//        ResponseDTO responseDTO = new ResponseDTO();
//        Map<String,String> parameter = WebUtils.getAllParamMap(request);
//        try {
//        	Subject subject = SecurityUtils.getSubject();
//            ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
//            parameter.put("operator", activeUser.getUserId());
//            ktCommonService.saveZone(parameter);
//            responseDTO.setCode("200");
//            responseDTO.setSuccess(true);
//            responseDTO.setMessage("操作成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setMessage("服务器异常");
//        }
//        return responseDTO;
//
//    }
//
//
//    /**
//     * 获取子机构
//     *
//     * @param request
//     * @param response
//     * @return
//     */
//    @RequestMapping("/getSubOrg")
//    public
//    @ResponseBody
//    List<Map<String, Object>> getSubOrg(HttpServletRequest request, HttpServletResponse response) {
//    	Map<String,String> parameter = WebUtils.getAllParamMap(request);
//    	List<Map<String, Object>> result = ktCommonService.getSubOrg(parameter);
//        return result;
//    }
//
//
//
//    /**
//     * 分页区域信息
//     *
//     * @param request
//     * @param response
//     * @return
//     */
//    @RequestMapping("/getOrgListByPage")
//    public
//    @ResponseBody
//    PageDTO<Map<String, Object>> getOrgListByPage(HttpServletRequest request, HttpServletResponse response) {
//    	Integer page = Integer.valueOf(request.getParameter("page"));
//		Integer pageSize = Integer.valueOf(request.getParameter("rows"));
//        String filters = request.getParameter("filters");
//        PageDTO<Map<String, Object>> result = ktCommonService.getOrgListByPage(page, pageSize, filters);
//        return result;
//    }
//
//
//    /**
//     * 保存区域
//     *
//     * @param request
//     * @param response
//     * @return json
//     */
//    @RequestMapping("/saveOrg")
//    public
//    @ResponseBody
//    ResponseDTO saveOrg(HttpServletRequest request, HttpServletResponse response) {
//        ResponseDTO responseDTO = new ResponseDTO();
//        Map<String,String> parameter = WebUtils.getAllParamMap(request);
//        try {
//        	Subject subject = SecurityUtils.getSubject();
//            ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
//            parameter.put("operator", activeUser.getUserId());
//            ktCommonService.saveOrg(parameter);
//            responseDTO.setCode("200");
//            responseDTO.setSuccess(true);
//            responseDTO.setMessage("操作成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setMessage("服务器异常");
//        }
//        return responseDTO;
//
//    }
//
//    /**
//     * 保存用户信息
//     *
//     * @param request
//     * @param response
//     * @return json
//     */
//    @RequestMapping("/saveUser")
//    public
//    @ResponseBody
//    ResponseDTO saveUser(HttpServletRequest request, HttpServletResponse response) {
//        ResponseDTO responseDTO = new ResponseDTO();
//        Map<String,String> parameter = WebUtils.getAllParamMap(request);
//        try {
//        	String phone = parameter.get("phone") == null ? null : parameter.get("phone").toString();
//        	if(!StringUtils.isNullOrEmpty(phone)){
//        		Md5Hash md5Hash = new Md5Hash(phone, ShiroMd5HashConstant.SALT, ShiroMd5HashConstant.HASH_ITERATIONS);
//    			String password_md5 =  md5Hash.toString();
//    			parameter.put("password", password_md5);
//        	}
//
//        	ktCommonService.saveUser(parameter);
//            responseDTO.setCode("200");
//            responseDTO.setSuccess(true);
//            responseDTO.setMessage("操作成功");
//        } catch (CustomException e) {
//			responseDTO.setCode(HttpRequestConstant.SERVER_ERROR_CODE);
//			responseDTO.setMessage(e.getMessage());
//			e.printStackTrace();
//		}catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setMessage("服务器异常");
//        }
//        return responseDTO;
//
//    }
//
//    /**
//     * 分页员工信息
//     *
//     * @param request
//     * @param response
//     * @return
//     */
//    @RequestMapping("/getUserListByPage")
//    public
//    @ResponseBody
//    PageDTO<Map<String, Object>> getUserListByPage(HttpServletRequest request, HttpServletResponse response) {
//    	Integer page = Integer.valueOf(request.getParameter("page"));
//		Integer pageSize = Integer.valueOf(request.getParameter("rows"));
//        String filters = request.getParameter("filters");
//        PageDTO<Map<String, Object>> result = ktCommonService.getUserListByPage(page, pageSize, filters);
//        return result;
//    }
//
//    /**
//     * 保存店铺
//     *
//     * @param request
//     * @param response
//     * @return json
//     */
//    @RequestMapping("/saveShop")
//    public
//    @ResponseBody
//    ResponseDTO saveShop(HttpServletRequest request, HttpServletResponse response) {
//        ResponseDTO responseDTO = new ResponseDTO();
//        Map<String,String> parameter = WebUtils.getAllParamMap(request);
//        try {
//        	Subject subject = SecurityUtils.getSubject();
//            ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
//            parameter.put("operator", activeUser.getUserId());
//            ktCommonService.saveShop(parameter);
//            responseDTO.setCode("200");
//            responseDTO.setSuccess(true);
//            responseDTO.setMessage("操作成功");
//        } catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setMessage("服务器异常");
//        }
//        return responseDTO;
//    }
//
//
//    /**
//     * 获取某个人的店铺列表
//     *
//     * @param request
//     * @param response
//     * @return
//     */
//    @RequestMapping("/getShopList2User")
//    public
//    @ResponseBody
//    List<Map<String, Object>> getShopList2User(HttpServletRequest request, HttpServletResponse response) {
//    	Map<String,String> parameter = WebUtils.getAllParamMap(request);
//    	Subject subject = SecurityUtils.getSubject();
//        ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
////        System.out.println("============> activeUser: "+activeUser.getRoleNo());
//        parameter.put("roleNo", activeUser.getRoleNo());
//        System.out.println("============> activeUser: "+activeUser.getZoneCode());
//        parameter.put("userId", activeUser.getClouderUser());
//        //if("27".equals(activeUser.getRoleNo())){
//        parameter.put("zoneCode", activeUser.getZoneCode());
//        //}
//        System.out.println("============> parameter: "+parameter);
//    	List<Map<String, Object>> result = ktCommonService.getShopList2User(parameter);
//        return result;
//    }
//
//
//
//
//    /**
//     * 导入excel移库
//     *
//     * @param request
//     * @param response
//     * @return json
//     */
//    @RequestMapping("/saveExcelInstockOrder")
//    public
//    @ResponseBody
//    ResponseDTO saveExcelInstockOrder(HttpServletRequest request, MultipartFile excel){
//        System.out.println("=========================================================================================");
//        ResponseDTO responseDTO = new ResponseDTO();
//        Map<String,String> parameter = getAllParamMap(request);
//        String shopId = parameter.get("shopId");
//        try {
//            //原来的名字
//            String originalFileName = excel.getOriginalFilename();
//            //上传文件
//            if (excel != null && originalFileName != null && originalFileName.length() > 0) {
//
//                SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
////                String excelFilePath = "/home/app_01/consumer/clouderp-platform-parent/"+ df.format(new Date());
//                String excelFilePath = "D:/";
//                Subject subject = SecurityUtils.getSubject();
//                //身份
//                ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
//                //新的文件名称
//                SimpleDateFormat dfs = new SimpleDateFormat("HHmmssSSS");//设置日期格式
//                String newFileName = "/SZ_EXCEL-" + shopId + "-" + dfs.format(new Date()) + originalFileName.substring(originalFileName.lastIndexOf("."));
//
//                File file = new File(excelFilePath + newFileName);
//
//                if(!file.exists()){
//                    file.mkdirs();
//                }
//                excel.transferTo(file);
//                //TODO 读取文件信息，然后写入到数据库
//                Thread.sleep(100);
//                List<List<Map<String, Object>>> result = readExcelWithTitle(excelFilePath + newFileName);
//                List<Map<String, Object>> seet1 = result.get(0);
//                parameter.put("prodList", JSONArray.fromObject(transformParamsEnter(seet1)).toString());
//                parameter.put("shopId", shopId);
//                ktCommonService.saveInstock(parameter);
//                responseDTO.setCode("200");
//                responseDTO.setSuccess(true);
//                responseDTO.setMessage("操作成功");
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setMessage("服务器异常");
//        }
//        return responseDTO;
//
//    }
//
//    /**
//     * 适用于第一行是标题行的excel，例如
//     * 姓名   年龄  性别  身高
//     * 张三   25  男   175
//     * 李四   22  女   160
//     * 每一行构成一个map，key值是列标题，value是列值。没有值的单元格其value值为null
//     * 返回结果最外层的list对应一个excel文件，第二层的list对应一个sheet页，第三层的map对应sheet页中的一行
//     * @throws Exception
//     */
//    public static List<List<Map<String, Object>>>  readExcelWithTitle(String filePath) throws Exception{
//        String fileType = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length());
//        InputStream is = null;
//        Workbook wb = null;
//        try {
//            is = new FileInputStream(filePath);
//            File excel = new File(filePath);
//            if (excel.isFile() && excel.exists()) {   //判断文件是否存在
//                if (fileType.equals("xls")) {
//                    wb = new HSSFWorkbook(is);
//                } else if (fileType.equals("xlsx")) {
//                    wb = new XSSFWorkbook(is);
////                throw new Exception("文件格式不对");
//                } else {
//                    throw new Exception("读取的不是excel文件");
//                }
//            }else {
//                throw new Exception("excel文件不存在");
//            }
//
//            List<List<Map<String, Object>>> result = new ArrayList<List<Map<String,Object>>>();//对应excel文件
//
//            int sheetSize = wb.getNumberOfSheets();
//            for (int i = 0; i < sheetSize; i++) {//遍历sheet页
//                Sheet sheet = wb.getSheetAt(i);
//                List<Map<String, Object>> sheetList = new ArrayList<Map<String, Object>>();//对应sheet页
//
//                List<String> titles = new ArrayList<String>();//放置所有的标题
//
//                int rowSize = sheet.getLastRowNum() + 1;
//                for (int j = 0; j < rowSize; j++) {//遍历行
//                    Row row = sheet.getRow(j);
//                    if (row == null) {//略过空行
//                        continue;
//                    }
//                    int cellSize = row.getLastCellNum();//行中有多少个单元格，也就是有多少列
//                    if (j == 0) {//第一行是标题行
//                        for (int k = 0; k < cellSize; k++) {
//                            Cell cell = row.getCell(k);
//                            titles.add(cell.toString());
//                        }
//                    } else {//其他行是数据行
//                        Map<String, Object> rowMap = new HashMap<String, Object>();//对应一个数据行
//                        for (int k = 0; k < titles.size(); k++) {
//                            Cell cell = row.getCell(k);
//                            String key = titles.get(k);
//                            String value = null;
//                            if (cell != null) {
//                                value = cell.toString();
//                            }
//                            rowMap.put(key, value);
//                        }
//                        sheetList.add(rowMap);
//                    }
//                }
//                result.add(sheetList);
//            }
//
//            return result;
//        } catch (FileNotFoundException e) {
//            throw e;
//        } finally {
//            if (wb != null) {
//                wb.close();
//            }
//            if (is != null) {
//                is.close();
//            }
//        }
//    }
//
//    /**
//     * 导入移库数据
//     * @param params
//     * @return
//     */
//    public static  List<Map<String, Object>> transformParamsEnter(List<Map<String, Object>> params) {
//        List<Map<String, Object>> results = new ArrayList<>();
//        for (Map<String, Object> param :  params) {
//            if (param.get("商品简码") == null || param.get("商品简码").equals("")) {
//                continue;
//            }
//            Map<String, Object> result = new HashMap<>();
//            result.put("shortCode",param.get("商品简码"));
//            result.put("shopStock",param.get("移库量"));
//            results.add(result);
//        }
//
//        return results;
//    }
//
//
//    /**
//     * 从URL获取所有参数列表
//     * @param request
//     * @return
//     */
//    public HashMap getAllParamMap(HttpServletRequest request){
//        HashMap hashMap = new HashMap();
//        Enumeration enums = request.getParameterNames();
//        String paramName = null;
//        String paramValue = null;
//
//        while (enums.hasMoreElements()) {
//            paramName = (String) enums.nextElement();
//            paramValue = (String) request.getParameter(paramName);
//            hashMap.put(paramName, paramValue);
//        }
//        return hashMap;
//    }
//}
